/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * frmClientes.java
 *
 * Created on 23-ago-2011, 1:09:03
 */

package GUI;

import Negocio.Cliente;
import Negocio.Prestamo;
import Negocio.SolicitudPrestamo;
import Util.GestorErrores;
import Util.Varios;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Javi
 */
public class frmClientes extends javax.swing.JDialog {
    //Referencia a un objeto que maneja la tabla asociada de la BD
    private Cliente _oCliente;

    //Referencia al formulario de detalle (hijo)
    private frmClientesDet _frmClientesDet = null;
    //Referencia al formulario de búsqueda (hijo)
    private frmClientesBus _frmClientesBus = null;
    //Referencia al formulario de conjunto de Solicitudes (hijo)
    private frmCompras _frmSolicPrestamos = null;
    //Referencia al formulario de conjunto de Préstamos (hijo)
    private frmCompras _frmPrestamos = null;


    //Referencia al formulario padre
    //Solo se utiliza esta referencia cuando este formulario es llamado desde el formulario de detalle de préstamos/compras
    private frmComprasDet _frmPadre = null;
    //Referencias a los vectores que utiliza el JTable para mostrar la cuadrícula de datos.
    private Vector _columnIdentifiers;
    private Vector _dataVector;
    //Indica si

    private int _iFila; //Fila de la tabla a actualizar/borrar. -1 si es una inserción

    /**
     * cOrigen = 'N' -> modo clientes normal (llamada desde el menú principal)
     * cOrigen = 'H' -> modo Historial de clientes (llamada desde el menú principal)
     * cOrigen = 'P' -> modo clientes normal (llamada desde Solicitudes el detalle de Préstamos/PRéstamos)
     */
    public frmClientes(java.awt.Frame parent, boolean modal, char cOrigen) {
        super(parent, modal);
        this.inicializaFormulario(cOrigen);
    }

    public frmClientes(frmComprasDet parent, boolean modal, char cOrigen) {
        super(parent, modal);
        //Solo en este caso cargo la referencia al formulario padre (detalle de solicitudes/préstamos)
        this._frmPadre = parent;
        this.inicializaFormulario(cOrigen);
    }

    private void inicializaFormulario(char cOrigen){
        this._oCliente = new Cliente();
        switch (cOrigen){
            case 'H': //Llamado desde MenúPrincipal opción Historial Clientes
                this.setTitle( "Historial crediticio de " + this._oCliente.getsDescripTabla());
                break;
            case 'N':   //Llamado desde MenúPrincipal opción Clientes
            case 'P':   //Llamado desde Detalle de Préstamos/Solicitudes
                this.setTitle( this._oCliente.getsDescripTabla() );
                break;
        }
        //Aqui se crean los vectores.
        this._columnIdentifiers = new Vector ();
        this._dataVector = new Vector ();

        initComponents();
        //Ocultar/Mostrar botones
        switch (cOrigen){
            case 'H': //Llamado desde MenúPrincipal opción Historial Clientes
                this.jButtonAnadir.setVisible(false);
                this.jButtonSeleccionar.setVisible(false);
                this.jButtonModificar.setVisible(false);
                this.jButtonBorrar.setVisible(false);
                this.jButtonPrestamos.setVisible(true);
                this.jButtonSolicitudes.setVisible(true);
                break;
            case 'N':   //Llamado desde MenúPrincipal opción Clientes
                this.jButtonAnadir.setVisible(true);
                this.jButtonSeleccionar.setVisible(false);
                this.jButtonModificar.setVisible(true);
                this.jButtonBorrar.setVisible(true);
                this.jButtonPrestamos.setVisible(false);
                this.jButtonSolicitudes.setVisible(false);
                break;
            case 'P':   //Llamado desde Detalle de Préstamos/Solicitudes
                this.jButtonAnadir.setVisible(true);
                this.jButtonSeleccionar.setVisible(true);
                this.jButtonModificar.setVisible(false);
                this.jButtonBorrar.setVisible(false);
                this.jButtonPrestamos.setVisible(false);
                this.jButtonSolicitudes.setVisible(false);
                break;
        }
        getRootPane().setDefaultButton(jButtonConsultar);
    }

    public Cliente getoObjetoDatos() {
        return _oCliente;
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jToolBar1 = new javax.swing.JToolBar();
        jButtonAnadir = new javax.swing.JButton();
        jButtonConsultar = new javax.swing.JButton();
        jButtonSeleccionar = new javax.swing.JButton();
        jButtonModificar = new javax.swing.JButton();
        jButtonBorrar = new javax.swing.JButton();
        jSeparator1 = new javax.swing.JToolBar.Separator();
        jButtonFiltrar = new javax.swing.JButton();
        jButtonQuitarFiltros = new javax.swing.JButton();
        jSeparator2 = new javax.swing.JToolBar.Separator();
        jButtonPrestamos = new javax.swing.JButton();
        jButtonSolicitudes = new javax.swing.JButton();
        jSeparator3 = new javax.swing.JToolBar.Separator();
        jButtonCerrar = new javax.swing.JButton();
        panelTabla = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTableDatos = new javax.swing.JTable();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

        jToolBar1.setFloatable(false);
        jToolBar1.setRollover(true);

        jButtonAnadir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos/Alta.gif"))); // NOI18N
        jButtonAnadir.setText("Alta");
        jButtonAnadir.setToolTipText("Alta");
        jButtonAnadir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonAnadirActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonAnadir);

        jButtonConsultar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos/Consulta.gif"))); // NOI18N
        jButtonConsultar.setText("Consultar");
        jButtonConsultar.setToolTipText("Consultar");
        jButtonConsultar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonConsultarActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonConsultar);

        jButtonSeleccionar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos/Importar.gif"))); // NOI18N
        jButtonSeleccionar.setText("Importar");
        jButtonSeleccionar.setToolTipText("Importar datos cliente");
        jButtonSeleccionar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonSeleccionarActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonSeleccionar);

        jButtonModificar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos/Modificacion.gif"))); // NOI18N
        jButtonModificar.setText("Modificar");
        jButtonModificar.setToolTipText("Modificar");
        jButtonModificar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonModificarActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonModificar);

        jButtonBorrar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos/Baja.gif"))); // NOI18N
        jButtonBorrar.setText("Borrar");
        jButtonBorrar.setToolTipText("Borrar");
        jButtonBorrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonBorrarActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonBorrar);
        jToolBar1.add(jSeparator1);

        jButtonFiltrar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos/Filtrar.gif"))); // NOI18N
        jButtonFiltrar.setText("Filtrar");
        jButtonFiltrar.setToolTipText("Filtrar");
        jButtonFiltrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonFiltrarActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonFiltrar);

        jButtonQuitarFiltros.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos/QuitarFiltro.gif"))); // NOI18N
        jButtonQuitarFiltros.setText("Quitar filtros");
        jButtonQuitarFiltros.setToolTipText("Quitar filtros");
        jButtonQuitarFiltros.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonQuitarFiltrosActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonQuitarFiltros);
        jToolBar1.add(jSeparator2);

        jButtonPrestamos.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos/Prestamo.gif"))); // NOI18N
        jButtonPrestamos.setText("Préstamos");
        jButtonPrestamos.setToolTipText("Préstamos del cliente");
        jButtonPrestamos.setFocusable(false);
        jButtonPrestamos.setHorizontalTextPosition(javax.swing.SwingConstants.LEADING);
        jButtonPrestamos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonPrestamosActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonPrestamos);

        jButtonSolicitudes.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos/Solicitud.gif"))); // NOI18N
        jButtonSolicitudes.setText("Solicitudes");
        jButtonSolicitudes.setToolTipText("Solicitudes del cliente");
        jButtonSolicitudes.setFocusable(false);
        jButtonSolicitudes.setHorizontalTextPosition(javax.swing.SwingConstants.LEADING);
        jButtonSolicitudes.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonSolicitudesActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonSolicitudes);
        jToolBar1.add(jSeparator3);

        jButtonCerrar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos/Volver.gif"))); // NOI18N
        jButtonCerrar.setText("Volver");
        jButtonCerrar.setToolTipText("Volver");
        jButtonCerrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonCerrarActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonCerrar);

        jTableDatos.setModel(new ModeloTabla());
        jTableDatos.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        jScrollPane1.setViewportView(jTableDatos);

        javax.swing.GroupLayout panelTablaLayout = new javax.swing.GroupLayout(panelTabla);
        panelTabla.setLayout(panelTablaLayout);
        panelTablaLayout.setHorizontalGroup(
            panelTablaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelTablaLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 865, Short.MAX_VALUE)
                .addContainerGap())
        );
        panelTablaLayout.setVerticalGroup(
            panelTablaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelTablaLayout.createSequentialGroup()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 537, Short.MAX_VALUE)
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(12, 12, 12)
                .addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, 865, Short.MAX_VALUE)
                .addGap(12, 12, 12))
            .addComponent(panelTabla, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(panelTabla, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jButtonAnadirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAnadirActionPerformed
        this._iFila = -1;
        //Inicializamos el objeto
        this._oCliente.inicializa();
        //Create and set up the window.
        if ( this._frmClientesDet == null ){
            this._frmClientesDet = new frmClientesDet( this, true );
            this._frmClientesDet.setLocationRelativeTo(this);
            this._frmClientesDet.pack();
        }
        this._frmClientesDet.inicializaFormulario('A');
        this._frmClientesDet.setVisible(true);
}//GEN-LAST:event_jButtonAnadirActionPerformed

    private void jButtonModificarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonModificarActionPerformed
        if ( jTableDatos.getSelectedRow() == -1 )
            JOptionPane.showMessageDialog( null,"No hay ninguna fila seleccionada","Aviso", JOptionPane.WARNING_MESSAGE);
        else {
            this._iFila = jTableDatos.getSelectedRow();
            DefaultTableModel md = (DefaultTableModel) jTableDatos.getModel();
            //Obtenemos la clave del objeto y lo cargamos de la BD
            this._oCliente.vectorJTableAClavesClase(this._columnIdentifiers, (Vector) md.getDataVector().get(this._iFila) );
            //Inicializo el vector global de errores
            GestorErrores.getInstancia().getvErrores().clear();
            this._oCliente.recupera();
            //Create and set up the window.
            if ( this._frmClientesDet == null ){
                this._frmClientesDet = new frmClientesDet( this, true );
                this._frmClientesDet.setLocationRelativeTo(this);
                this._frmClientesDet.pack();
            }
            this._frmClientesDet.inicializaFormulario('M');
            this._frmClientesDet.setVisible(true);
        }
}//GEN-LAST:event_jButtonModificarActionPerformed

    private void jButtonBorrarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonBorrarActionPerformed
        if ( jTableDatos.getSelectedRow() == -1 )
            JOptionPane.showMessageDialog( null,"No hay ninguna fila seleccionada","Aviso", JOptionPane.INFORMATION_MESSAGE);
        else {
            this._iFila = jTableDatos.getSelectedRow();
            DefaultTableModel md = (DefaultTableModel) jTableDatos.getModel();
            //Obtengo las claves del elemento a partir del panel de datos.
            this._oCliente.vectorJTableAClavesClase( this._columnIdentifiers, (Vector) md.getDataVector().get(this._iFila) );
            //Inicializo el vector global de errores
            GestorErrores.getInstancia().getvErrores().clear();
            this._oCliente.recupera();
            //Create and set up the window.
            if ( this._frmClientesDet == null ){
                this._frmClientesDet = new frmClientesDet( this, true );
                this._frmClientesDet.setLocationRelativeTo(this);
                this._frmClientesDet.pack();
            }
            this._frmClientesDet.inicializaFormulario('B');
            this._frmClientesDet.setVisible(true);
        }
}//GEN-LAST:event_jButtonBorrarActionPerformed

    private void jButtonCerrarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonCerrarActionPerformed
        setVisible(false);
}//GEN-LAST:event_jButtonCerrarActionPerformed

    private void jButtonFiltrarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonFiltrarActionPerformed
        //Create and set up the window.
        if ( this._frmClientesBus == null ){
            this._frmClientesBus = new frmClientesBus( this, true );
            this._frmClientesBus.setLocationRelativeTo(this);
            this._frmClientesBus.pack();
        }
        this._frmClientesBus.inicializaFormulario('S');
        this._frmClientesBus.setVisible(true);
    }//GEN-LAST:event_jButtonFiltrarActionPerformed

    private void jButtonConsultarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonConsultarActionPerformed
        if ( jTableDatos.getSelectedRow() == -1 )
            JOptionPane.showMessageDialog( null,"No hay ninguna fila seleccionada","Aviso", JOptionPane.WARNING_MESSAGE);
        else {
            this._iFila = jTableDatos.getSelectedRow();
            DefaultTableModel md = (DefaultTableModel) jTableDatos.getModel();
            //Obtenemos la clave del objeto y lo cargamos de la BD
            this._oCliente.vectorJTableAClavesClase(this._columnIdentifiers, (Vector) md.getDataVector().get(this._iFila) );
            //Inicializo el vector global de errores
            GestorErrores.getInstancia().getvErrores().clear();
            this._oCliente.recupera();
            //Create and set up the window.
            if ( this._frmClientesDet == null ){
                this._frmClientesDet = new frmClientesDet( this, true );
                this._frmClientesDet.setLocationRelativeTo(this);
                this._frmClientesDet.pack();
            }
            this._frmClientesDet.inicializaFormulario('C');
            this._frmClientesDet.setVisible(true);
        }
    }//GEN-LAST:event_jButtonConsultarActionPerformed

    private void jButtonSeleccionarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonSeleccionarActionPerformed
        if ( jTableDatos.getSelectedRow() == -1 )
            JOptionPane.showMessageDialog( null,"No hay ninguna fila seleccionada","Aviso", JOptionPane.WARNING_MESSAGE);
        else {
            this._iFila = jTableDatos.getSelectedRow();
            DefaultTableModel md = (DefaultTableModel) jTableDatos.getModel();
            //Obtenemos la clave del objeto y lo cargamos de la BD
            this._oCliente.vectorJTableAClavesClase(this._columnIdentifiers, (Vector) md.getDataVector().get(this._iFila) );
            //Inicializo el vector global de errores
            GestorErrores.getInstancia().getvErrores().clear();
            this._oCliente.recupera();
            //Pasamos la info del cliente elegido al formulario de Compras
            this._frmPadre.setoCliente (this._oCliente);
            //Ocultar la ventana
            this.setVisible(false);
        }

    }//GEN-LAST:event_jButtonSeleccionarActionPerformed

    private void jButtonQuitarFiltrosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonQuitarFiltrosActionPerformed
        this.actualizarVista("");
    }//GEN-LAST:event_jButtonQuitarFiltrosActionPerformed

    private void jButtonPrestamosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonPrestamosActionPerformed
        if ( jTableDatos.getSelectedRow() == -1 )
            JOptionPane.showMessageDialog( null,"No hay ninguna fila seleccionada","Aviso", JOptionPane.WARNING_MESSAGE);
        else {
            this._iFila = jTableDatos.getSelectedRow();
            DefaultTableModel md = (DefaultTableModel) jTableDatos.getModel();
            //Obtenemos la clave del objeto
            this._oCliente.vectorJTableAClavesClase(this._columnIdentifiers, (Vector) md.getDataVector().get(this._iFila) );
            //Create and set up the window.
            if ( this._frmPrestamos == null ){
                this._frmPrestamos = new frmCompras ( this, false, new Prestamo() );
                this._frmPrestamos.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
                this._frmPrestamos.setLocationRelativeTo(this);

                //Display the window.
                this._frmPrestamos.pack();
            }
            //Carga de los datos en la pantalla
            //Primero establecemos la condición PERMANENTE sobre el cliente
            this._frmPrestamos.setsCondicionIdCliente (this._oCliente.getiIdCliente());
            //Carga de los datos en la pantalla
            this._frmPrestamos.actualizarVista("");
            this._frmPrestamos.setVisible(true);
        }
    }//GEN-LAST:event_jButtonPrestamosActionPerformed

    private void jButtonSolicitudesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonSolicitudesActionPerformed
        if ( jTableDatos.getSelectedRow() == -1 )
            JOptionPane.showMessageDialog( null,"No hay ninguna fila seleccionada","Aviso", JOptionPane.WARNING_MESSAGE);
        else {
            this._iFila = jTableDatos.getSelectedRow();
            DefaultTableModel md = (DefaultTableModel) jTableDatos.getModel();
            //Obtenemos la clave del objeto
            this._oCliente.vectorJTableAClavesClase(this._columnIdentifiers, (Vector) md.getDataVector().get(this._iFila) );
            //Create and set up the window.
            if ( this._frmSolicPrestamos == null ){
                this._frmSolicPrestamos = new frmCompras ( this, false, new SolicitudPrestamo() );
                this._frmSolicPrestamos.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
                this._frmSolicPrestamos.setLocationRelativeTo(this);

                //Display the window.
                this._frmSolicPrestamos.pack();
            }
            //Carga de los datos en la pantalla
            //Primero establecemos la condición PERMANENTE sobre el cliente
            this._frmSolicPrestamos.setsCondicionIdCliente (this._oCliente.getiIdCliente());
            this._frmSolicPrestamos.actualizarVista("");
            this._frmSolicPrestamos.setVisible(true);
        }
    }//GEN-LAST:event_jButtonSolicitudesActionPerformed

    /*
     * Recarga el panel de datos a partir de las tablas de la BD, aplicando la condición que recibe como parámetro
     */
    public void actualizarVista(String sCondWhere){
        //Inicializo los vectores
        this._columnIdentifiers.clear();
        this._dataVector.clear();
        //Actualizo la condición que utiliza el selectAll
        this._oCliente.getoClienteDatPers().setsCondWhere(sCondWhere);
        //Si se aplica una condición cambiar el color de fondo del botón.
        if (sCondWhere.trim().compareTo("") != 0)
            Varios.setBackgroundColorActivated (this.jButtonFiltrar, true);
        else
            Varios.setBackgroundColorActivated (this.jButtonFiltrar, false);
        //Inicializo el vector global de errores
        GestorErrores.getInstancia().getvErrores().clear();
        //Recuperar la información de la tabla (los nombres de campos y los datos)
        boolean bCargaOK = this._oCliente.selectAll( this._columnIdentifiers, this._dataVector );
        if (!bCargaOK){
            //Si ha habido errores informo de ellos
            String mensaje = "¡Error al cargar los datos!" + "\n";
            for (int i= 0; i< GestorErrores.getInstancia().getvErrores().size(); i++)
                mensaje = mensaje + GestorErrores.getInstancia().getvErrores().get(i) + "\n";
            JOptionPane.showMessageDialog( null, mensaje,"Error", JOptionPane.ERROR_MESSAGE);
        }
        DefaultTableModel md = (DefaultTableModel) jTableDatos.getModel();
        //Una vez cargados los datos en los vectores, éstos se ASOCIAN a los vectores de datos del JPanel
        //para mostrarlos en pantalla
        md.setDataVector( _dataVector, _columnIdentifiers );
        md.fireTableDataChanged();
    }


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButtonAnadir;
    private javax.swing.JButton jButtonBorrar;
    private javax.swing.JButton jButtonCerrar;
    private javax.swing.JButton jButtonConsultar;
    private javax.swing.JButton jButtonFiltrar;
    private javax.swing.JButton jButtonModificar;
    private javax.swing.JButton jButtonPrestamos;
    private javax.swing.JButton jButtonQuitarFiltros;
    private javax.swing.JButton jButtonSeleccionar;
    private javax.swing.JButton jButtonSolicitudes;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JToolBar.Separator jSeparator1;
    private javax.swing.JToolBar.Separator jSeparator2;
    private javax.swing.JToolBar.Separator jSeparator3;
    private javax.swing.JTable jTableDatos;
    private javax.swing.JToolBar jToolBar1;
    private javax.swing.JPanel panelTabla;
    // End of variables declaration//GEN-END:variables

    class ModeloTabla extends DefaultTableModel {
        /*
         * Sobreescribo el método para impedir que las celdas sean editables
         */
        public boolean isCellEditable(int row, int col) {
            return false;
        }
    }
}
